// Gzip需要使用这个模块
const CompressionPlugin = require('compression-webpack-plugin')

module.exports = {
  // vue-cli3.3+新版本使用publicpath配置基本路径
  publicPath: './',
  // eslint-loader 是否在保存的时候检查
  lintOnSave: true,
  // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
  assetsDir: 'static',
  // 以多页模式构建应用程序。
  pages: undefined,
  // 是否使用包含运行时编译器的 Vue 构建版本
  runtimeCompiler: false,
  // 生产环境是否生成 sourceMap 文件，一般情况不建议打开
  productionSourceMap: false,
  // chainWebpack做高级配置；包括对loader的添加，修改；以及插件的配置
  chainWebpack: config => {
    // 移除prefetch插件 取消预加载
    config.plugins.delete('prefetch')
  },
  // configureWebpack 用于做简单配置，配置默认cli不存在的配置项，使用webpack原生写法
  configureWebpack: {
    externals: {
      // 配置cdn引入
      'vue': 'Vue',
      'element-ui': 'ELEMENT',
      'vuex': 'Vuex',
      'vue-router': 'VueRouter',
      'axios': 'axios',
      'echarts': 'echarts'
    },
    plugins: [
      new CompressionPlugin({
        // 打开Gzip压缩
        test: /\.js$|\.html$|\.css$|\.jpg$|\.jpeg$|\.png/, // 需要压缩的文件类型
        threshold: 10240, // 归档需要进行压缩的文件大小最小值，我这个是10K以上的进行压缩
        deleteOriginalAssets: false, // 是否删除原文件
        minRatio: 0.8
      })
    ]
  }
}
